package com.sisgh.jefdv1.core.exec;

import com.sisgh.jefdv1.core.entity.Entity;
import com.sisgh.jefdv1.core.java.keyword.imports.impl.Annotation;
import com.sisgh.jefdv1.core.java.keyword.imports.impl.Extend;
import com.sisgh.jefdv1.core.java.keyword.pack.Package;
import com.sisgh.jefdv1.core.jdbc.table.Table;
import com.sisgh.jefdv1.exception.file.JavaFileException;

import java.sql.SQLException;
import java.util.List;

public interface Executor {

    List<String> showDBs() throws SQLException;

    List<Table> getTables() throws SQLException;

    List<Entity> toEntities(List<Table> tables) throws SQLException;

    void writeFiles(List<Entity> entities,
                    Package pack,
                    List<Annotation> annotations,
                    Extend extend,
                    boolean foldersByPackage) throws JavaFileException;
}
